redis 配置说明

前言

本篇主要介绍redis常用配置的作用,以便后期对redis服务进行配置性的优化。redis可以在没有配置文件的情况下,通过内置的配置来启动,但是这种启动方式只适用于开发和测试。配置文件模板位于redis安装目录下,文件名为redis.conf。

CONFIG命令

我们可以使用CONFIG命令来查看及动态设置redis相关配置,具体语法如下:

  1. 查询配置

    精确查询:

    CONFIG GET xxx(xxx指定配置名称)

    模糊查询:

    CONFIG GET *(模糊查询所有配置项)

    CONFIG GET a*(模糊查询以a开头的配置项)

    CONFIG GET *d(模糊查询以结尾的配置项)

    image

    上图中:1)表示配置名称,2)表示配置值。

  2. 修改配置

    CONFIG SET xxx

备注:有些配置(例如:daemonize,pidfile,port等)不支持动态修改。
image

redis.conf

include /path/to/local.conf
类似于jsp中的include标签,便于嵌入其他配置文件

daemonize
redis服务默认不是以守护进程的方式运行,可以通过修改该配置项,使用yes启用守护进程,默认值no

pidfile
当redis以守护进程方式运行时,默认会把pid写入/var/run/redis_6379.pid文件,可以通过设置pidfile指定pid文件存放位置

dbfilename
指定数据库文件名称,默认值dump.rdb

dir
指定数据库文件存放目录,默认值./

bind 192.168.1.100 10.0.0.1
默认情况下,redis服务会监听服务器上所有可用的网络接口;我们可以通过bind
指定监听一个或多个网络接口IP。

port
redis服务对外监听的端口,默认值6379。

timeout
当client空闲timeout秒后(0:禁用该功能),redis将主动关闭TCP连接。

tcp-backlog
设置tcp连接队列的大小,受限于内核参数"/proc/sys/net/core/somaxconn"值的限制,两者取最小值。

maxclients
设置同一时间最大客户端连接数,默认10000(低版本默认是不限制),Redis可
以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,
如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,
Redis会关闭新的连 接并向客户端返回max number of clients reached错误信息。

loglevel notice
设置日志的打印级别。debug < verbose < notice < warning

databases
设置redis数据库的数量,默认值16,dbid值在0至15之间;默认数据库为0,可以
使用SELECT <dbid>命令在连接上指定数据库id。

rdbcompression
指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为
了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大。

save <seconds> <changes>
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。
redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒
内有10000个更改则将数据同步到数据文件。

appendonly
指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写
入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为
redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间
内只存在于内存中。默认为no。

appendfilename
指定更新操作日志文件名,默认为appendonly.aof。

appendfsync
指定更新日志文件策略,取值有:
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折衷,默认值)

requirepass
设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭。

slaveof <masterip> <masterport>
当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步。

masterauth <master-password>
当master服务设置了密码保护时,slav服务连接master的密码。

glueoutputbuf
设置在向客户端应答时,是否把较小的包合并为一个包发送,默认值yes(开启)。

maxmemory <bytes>
指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存
后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理
后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。
Redis新的vm机制,会把Key存放内存,Value会存放在swap区。

maxmemory-policy
volatile-lru:从设置了过期时间的缓存key中,使用lru策略移除key
allkeys-lru:从所有缓存key中,使用lru策略移除key
volatile-random:从设置了过期时间的缓存key中随机移除
allkeys-random:从所有缓存key中随机移除
volatile-ttl:移除即将要过期的key
noeviction:不移除任何key,对于写操作直接返回一个错误,读操作正常处理
默认处理策略是volatile-lru。

maxmemory-samples
lru和ttl算法不是精确的算法,可以指定样本key的个数来提高精确度,默认值3。

vm-enabled
指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页
存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中。

lua-time-limit
设置lua脚本执行的最长时间(毫秒),设置0或负数时表示不做限制;默认值5秒。

....
........

更多配置详情参考《官方配置文档》

参考链接

  1. http://www.runoob.com/redis/redis-conf.html
  2. http://www.redis.net.cn/tutorial/3504.html
  3. https://raw.githubusercontent.com/antirez/redis/2.8/redis.conf